package cn.iocoder.yudao.module.infrastructure.wechat.service;

import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
import cn.iocoder.yudao.module.api.infrastructure.wechat.enums.WxTempateSceneEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * 微信公众号模板消息
 *
 * @author yshop
 * @author 山野羡民
 **/
@Slf4j
@Service
public class WechatTemplateMessageService extends WechatBaseMessageService {

    /**
     * 支付成功通知
     *
     * @param userId 用户编号
     * @param tradeNo 交易单号
     * @param price 金额
     */
    public void paySuccessNotice(Long userId, String tradeNo, String price) {
        TenantUtils.executeIgnore(() -> {
            Map<String, String> map = new HashMap<>();
            map.put("first", "您的订单已支付成功，我们会尽快为您发货。");
            map.put("keyword1", tradeNo);
            map.put("keyword2", price);
            map.put("remark", REMARK);
            sendWxMpTemplateMessage(userId, WxTempateSceneEnum.PAY_SUCCESS, map);
        });
    }

    /**
     * 退款成功通知
     *
     * @param userId 用户编号
     * @param tradeNo 交易单号
     * @param price 金额
     * @param time 时间
     */
    public void refundSuccessNotice(Long userId, String title, String tradeNo, String price, String time) {
        TenantUtils.executeIgnore(() -> {
            Map<String, String> map = new HashMap<>();
            map.put("first", title);
            map.put("keyword1", tradeNo);
            map.put("keyword2", price);
            map.put("keyword3", time);
            map.put("remark", REMARK);
            sendWxMpTemplateMessage(userId, WxTempateSceneEnum.REFUND_SUCCESS, map);
        });
    }

    /**
     * 发货成功通知
     *
     * @param userId 用户编号
     * @param tradeNo 交易单号
     * @param deliveryName 快递公司
     * @param deliveryNo 快递单号
     */
    public void deliverySuccessNotice(Long userId, String tradeNo, String deliveryName, String deliveryNo) {
        TenantUtils.executeIgnore(() -> {
            Map<String, String> map = new HashMap<>();
            map.put("first", "亲，宝贝已经启程了，好想快点来到你身边。");
            map.put("keyword2", deliveryName);
            map.put("keyword1", tradeNo);
            map.put("keyword3", deliveryNo);
            map.put("remark", REMARK);
            sendWxMpTemplateMessage(userId, WxTempateSceneEnum.DELIVERY_SUCCESS, map);
        });
    }

}
